#ifndef COMMUNICATIONINTERFACE_H
#define COMMUNICATIONINTERFACE_H

#include <QObject>
#include <QByteArray>

class CommunicationInterface : public QObject {
    Q_OBJECT
public:
    explicit CommunicationInterface(QObject *parent = nullptr) : QObject(parent) {}
    virtual ~CommunicationInterface() override = default;

    /**
     * @brief 初始化通信模块（如打开串口/网口）
     * @param params 初始化参数（如串口波特率、网口IP地址等）
     * @return 初始化成功返回true，否则返回false
     */
    virtual bool initialize(const QVariantMap &params) = 0;

    /**
     * @brief 反初始化通信模块（关闭通信连接）
     */
    virtual void uninitialize() = 0;

    /**
     * @brief 发送数据到通信模块
     * @param data 待发送的字节数据
     * @return 发送成功返回true，否则返回false
     */
    virtual bool sendData(const QByteArray &data) = 0;

    /**
     * @brief 获取通信模块类型
     * @return 模块类型字符串（如"SerialPort"表示串口，"Network"表示网口）
     */
    virtual QString type() const = 0;

    /**
     * @brief 获取当前通信状态
     * @return 状态字符串（如"Connected"表示已连接，"Disconnected"表示断开）
     */
    virtual QString status() const = 0;

signals:
    // 接收到数据时触发
    void dataReceived(const QByteArray &data);
    // 状态变更时触发
    void statusChanged(const QString &status);
};

Q_DECLARE_INTERFACE(CommunicationInterface, "CameraApp.CommunicationInterface/1.0")
#endif // COMMUNICATIONINTERFACE_H